﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using BUS;
namespace QLDT
{
    public partial class frm_TaophancongDetai : DevExpress.XtraEditors.XtraForm
    {
        bool them_tao;
        public frm_TaophancongDetai()
        {
            InitializeComponent();
        }

        private void frm_TaophancongDetai_Load(object sender, EventArgs e)
        {
            load();
        }
        public void createGridlookup()
        {
            // gridlookup Khoa hoc
            gridLookKhoaHoc.EditValue = null;
            gridLookKhoaHoc.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookKhoaHoc.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookKhoaHoc.Properties.ValueMember = "MaKH";
            gridLookKhoaHoc.Properties.DisplayMember = "NamBD";
            gridLookKhoaHoc.Properties.View.BestFitColumns();
            gridLookKhoaHoc.Properties.PopupFormWidth = 400;
            gridLookKhoaHoc.Properties.NullText = "Chọn khóa học";
            gridLookKhoaHoc.Properties.DataSource = BUS_KhoaHoc.SelectKhoaHoc();
            // gridlookup Loai de tai
            gridLookLoaiDT.EditValue = null;
            gridLookLoaiDT.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookLoaiDT.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookLoaiDT.Properties.ValueMember = "MaLoaiDT";
            gridLookLoaiDT.Properties.DisplayMember = "MaLoaiDT";
            gridLookLoaiDT.Properties.View.BestFitColumns();
            gridLookLoaiDT.Properties.PopupFormWidth = 400;
            gridLookLoaiDT.Properties.NullText = "Chọn loại đề tài";
            gridLookLoaiDT.Properties.DataSource = BUS_LoaiDT.selectLoaiDeTai();
           
        }
        private void state_Form()
        {
            this.Height = 262;
            lb_thongbao.Location = new System.Drawing.Point(17, 89);
            groupBox1.Height = 117;
            btn_Themvaochondetai.Location = new System.Drawing.Point(29,197);
            btn_dong.Location = new System.Drawing.Point(207, 197);
            lb_ngayhethan.Visible = false;
            date_ngayhethan.Visible = false;
        }
        private void load()
        {
            createGridlookup();
            state_Form();
            BUS_DeTai.Update_SVHH();
        }
        public int get_Nambatdau(string makh)
        {
            List<DTO_KhoaHoc> listKH = BUS_KhoaHoc.SelectKhoaHoc();
            for (int i = 0; i < listKH.Count; i++)
                if (listKH[i].MaKH == makh)
                    return listKH[i].NamBD;
            return 0;
        }
        public bool kiemtra()
        {
            if (gridLookKhoaHoc.EditValue == null)
                return false;
            int nambatdau = get_Nambatdau(gridLookKhoaHoc.EditValue.ToString());
            int namhientai = DateTime.Now.Year;
            if (gridLookLoaiDT.EditValue == null || gridLookKhoaHoc.EditValue == null)
            {
                lb_thongbao.Text = "Hãy chọn thông tin";
                return false;
            }
            string loaidt = gridLookLoaiDT.EditValue.ToString();
            string makhoahoc = gridLookKhoaHoc.EditValue.ToString();
           
            if (loaidt == "LDT01")
            {
                
                if(namhientai-nambatdau<2)
                {
                    lb_thongbao.Text = "Khóa học này không đủ điều kiện đăng ký loại đề tài:"+gridLookLoaiDT.EditValue.ToString();
                    return false;
                }
                state_Form();
                if (BUS_PhanCongDT.KiemtraTaoPhanCong_MaDT(makhoahoc, loaidt) == true)
                {
                    lb_thongbao.Text = "Đã phân công đề tài trước đó";
                    return false;
                }
                else
                {
                    lb_thongbao.Text = "Bạn có thể tạo phân công đề tài";
                    them_tao = false;
                    return true;
                }
            }
            else if (loaidt == "LDT02")
            {
                if (namhientai - nambatdau < 3)
                {
                    lb_thongbao.Text = "Khóa học này không đủ điều kiện đăng ký loại đề tài:" + gridLookLoaiDT.EditValue.ToString();
                    return false;
                }
                if (BUS_PhanCongDT.KiemtraThemPhanCong(makhoahoc, loaidt) == true)
                {
                    
                    if (BUS_PhanCongDT.KiemtraTaoPhanCong_MaDT(makhoahoc, loaidt) == true)
                    {
                        lb_thongbao.Text = "Đã tạo phân công đề tài này rồi";
                        return false;
                    }
                    else
                    {
                        lb_thongbao.Text = "Bạn có thể tạo phân công đề tài";
                        state_Form();
                        them_tao = false;
                        return true;
                    }
                }
                else
                {
                    lb_thongbao.Text = "Bạn có thể thêm phân công đề tài";
                    them_tao = true;
                    this.Height = 287;
                    lb_thongbao.Location = new System.Drawing.Point(17, 115);
                    groupBox1.Height = 143;
                    btn_Themvaochondetai.Location = new System.Drawing.Point(29, 224);
                    btn_dong.Location = new System.Drawing.Point(207, 224);
                    lb_ngayhethan.Visible = true;
                    date_ngayhethan.Visible = true;
                    return true;
                }

            }
            else
            {
                if (namhientai - nambatdau < 3)
                {
                    lb_thongbao.Text = "Khóa học này không đủ điều kiện đăng ký loại đề tài:" + gridLookLoaiDT.EditValue.ToString();
                    return false;
                }
                if (BUS_PhanCongDT.KiemtraThemPhanCong(makhoahoc, loaidt) == true)
                {
                    lb_thongbao.Text = "Phân công đề tài này đã được thêm rồi";
                    state_Form();
                    return false;
                }
                else
                {
                    lb_thongbao.Text = "Bạn có thể thêm phân công đề tài";
                    them_tao = true;
                    this.Height = 287;
                    lb_thongbao.Location = new System.Drawing.Point(17, 115);
                    groupBox1.Height = 143;
                    btn_Themvaochondetai.Location = new System.Drawing.Point(29, 224);
                    btn_dong.Location = new System.Drawing.Point(207, 224);
                    lb_ngayhethan.Visible = true;
                    date_ngayhethan.Visible = true;
                    return true;
                }
            }
        }
        private void btn_Themvaochondetai_Click(object sender, EventArgs e)
        {
            if (kiemtra())
            {
                string loaidt = gridLookLoaiDT.EditValue.ToString();
                string makhoahoc = gridLookKhoaHoc.EditValue.ToString();
                if (loaidt == "LDT01")
                {
                    if (BUS_SinhVien.SelectSinhVienTheoKhoaHoc(makhoahoc).Count==0)
                    {
                        XtraMessageBox.Show("Khóa học này không có sinh viên nào", "Thông báo");
                        return;
                    }
                    if (!BUS_PhanCongDT.PhanCongDeTai_LDT01(loaidt, makhoahoc))
                        XtraMessageBox.Show("Phân công đề tài thất bại", "Thông báo");
                    else
                    {
                        XtraMessageBox.Show("Phân công đề tài thành công", "Thông báo");
                        load();
                    }
                }
                else if (loaidt == "LDT02")
                {
                    if (them_tao)
                    {
                        if (BUS_SinhVien.SelectSinhVienTheoKhoaHoc(makhoahoc).Count == 0)
                        {
                            XtraMessageBox.Show("Khóa học này không có sinh viên nào", "Thông báo");
                            return;
                        }
                        if (date_ngayhethan.Text == "")
                        {
                            lb_thongbao.Text = "Hãy nhập ngày hết hạn";
                            return;
                        }
                        DateTime ngay = date_ngayhethan.DateTime;
                        if (!BUS_PhanCongDT.ThemPhanCongDeTai_LDT02(makhoahoc, loaidt, ngay))
                            XtraMessageBox.Show("Thêm phân công đề tài thất bại", "Thông báo");
                        else
                        {
                            XtraMessageBox.Show("Thêm phân công đề tài thành công", "Thông báo");
                            load();
                        }
                    }
                    else
                    {
                        if (!BUS_PhanCongDT.TaoPhanCongTuDongDeTai_LDT02(loaidt, makhoahoc))
                            XtraMessageBox.Show("Tạo phân công đề tài thất bại", "Thông báo");
                        else
                        {
                            XtraMessageBox.Show("Tạo phân công đề tài thành công", "Thông báo");
                            load();
                        }
                    }
                }
                else
                {
                    if (BUS_SinhVien.SelectSinhVienTheoKhoaHoc(makhoahoc).Count == 0)
                    {
                        XtraMessageBox.Show("Khóa học này không có sinh viên nào", "Thông báo");
                        return;
                    }
                    if (date_ngayhethan.Text == "")
                    {
                        lb_thongbao.Text = "Hãy nhập ngày hết hạn";
                        return;
                    }
                    DateTime ngay = date_ngayhethan.DateTime;
                    if (!BUS_PhanCongDT.ThemPhanCongDeTai_LDT02(makhoahoc, loaidt, ngay))
                        XtraMessageBox.Show("Thêm phân công đề tài thất bại", "Thông báo");
                    else
                    {
                        XtraMessageBox.Show("Thêm phân công đề tài thành công", "Thông báo");
                        load();
                    }
                }
            }
        }
        
        private void gridLookKhoaHoc_EditValueChanged(object sender, EventArgs e)
        {
            if (gridLookLoaiDT.EditValue != null)
            {
                kiemtra();
            }
        }

        private void gridLookLoaiDT_EditValueChanged(object sender, EventArgs e)
        {
            if (gridLookKhoaHoc.EditValue != null)
            {
                kiemtra();
            }
        }

        private void btn_dong_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}